import matplotlib.pyplot as plt  

  
def plt_topology(s: str, a: str, b: str, savepath: str):

    # 设定三个顶点的坐标  
    A = (1, 0)  
    B = (3, 0)  
    S = (2, 2)  
    
    # 创建一个新的图形和坐标轴  
    fig, ax = plt.subplots()  
    
    # 绘制AB线段（非箭头）  
    ax.plot([A[0], B[0]], [A[1], B[1]], 'b-')  
    
    # 绘制箭头：从A指向S  
    ax.annotate('', xy=S, xycoords='data', xytext=A, textcoords='data',  
                arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.0"))  
    
    # 绘制箭头：从B指向S  
    ax.annotate('', xy=S, xycoords='data', xytext=B, textcoords='data',  
                arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=-.0"))   
    
    # 绘制顶点圆形  
    ax.scatter([A[0], B[0], S[0]], [A[1], B[1], S[1]], s=300, c=['b', 'b', 'r'], marker='o')  
    
    # 添加文本标签  fintech/192.168.0.1
    ax.text(A[0], A[1] - 0.1, f'ClientA:%s' % a, ha='center', va='top')  
    ax.text(B[0], B[1] - 0.1, f'ClientB:%s' % b, ha='center', va='top')  
    ax.text(S[0], S[1] + 0.1, f'Server:%s' % s, ha='center', va='bottom') 

    # 设置图形标题和坐标轴标签（可选）  
    #ax.set_title(f'%s' % title)  
    ax.set_xlabel('X')  
    ax.set_ylabel('Y')  
    
    # 隐藏坐标轴刻度  
    ax.axis('off')  
    
    # 设置图形的显示比例  
    ax.set_aspect('equal', adjustable='box')  
    
    # 保存图形为PNG文件  cdn/下面的路径， 类似train_task/image_name
    plt.savefig(f'%s'%savepath)  
    
    # 显示图形  
    #plt.show()